The subject technology is generally directed to binary translation techniques. Some software is compiled as binary programs for specific CPU architectures, such as ARM® or x86®, and specific operation system, such as Android® or Microsoft Windows®. The binary programs may be downloaded to a computer of a user over the Internet. However, the user may not trust the program and may wish to run the program in a secure mode, where the program has limited access to data stored on the computer outside of the program. As the foregoing illustrates, an approach for securely executing software on a computer may be desirable.
Native Client may be used to securely execute software on the computer. However, some software is not written for Native Client and is not compatible with Native Client. Such software may need to be recompiled and ported to Native Client, which may require a nontrivial effort for some large, modern software products. As the foregoing illustrates, translating code that is not compatible with Native Client into Native Client may be desirable.